Ruby 日記 38日目: トップレベルのクラスを参照する
#Ruby_日記 #2021-10-04
https://rex.libertyfish.co.jp/exam_histories/42141/user_answers/7221b49a-26b6-4cb5-aae6-eec0bee83f35
次のプログラムを実行するとどうなりますか
code:gold/ex38/main.rb
class C
CONST = "Good, night"
end
module M
CONST = "Good, evening"
end
module M
class C
CONST = "Hello, world"
end
end
module M
class ::C
p CONST
end
end
選択肢:
例外が発生する
"Good, night"と表示される
"Good, evening"と表示される
"Hello, world"と表示される
解説:
類似問題はRuby 日記 1日目: トップレベルのクラスとネストされたクラスだね
code:rb
module M
class ::C
p CONST
end
end
に関しては、クラス定義の先頭にクラスセパレータ :: が使われているので、トップレベルのCクラスを参照するよ。
これ確か Object::C と同じ意味になるんだったよね。
なので「"Good, night"と表示される」が正解。
code:sh
# ruby gold/ex38/main.rb
"Good, night"